import * as vscode from 'vscode';
import {dedent} from "../../../utils";

// documentation中使用了代码块，代码块中写的事makedown格式，首行不能为空
let textAtlasItems = [
    {
        "label": "TextAtlas_Create",
        "insertText": dedent`
        GUI:TextAtlas_Create(\${1:parent}, \${2:ID}, \${3:x}, \${4:y}, \${5:stringValue}, \${6:charMapFile}, \${7:itemWidth}, \${8:itemHeight}, \${9:startCharMap}, \${10:sheet})
        `,
        "documentation": dedent`# 创建艺术字文本
        [在线文档](http://engine-doc.996m2.com/web/#/22/2181)

        | 参数         | 必选 | 类型   | 注释                                                         |
        | :----------- | :--- | :----- | :----------------------------------------------------------- |
        | parent       | 是   | obj    | 父节点对象                                                   |
        | ID           | 是   | string | 唯一ID                                                       |
        | x            | 是   | int    | 位置 横坐标                                                  |
        | y            | 是   | int    | 位置 纵坐标                                                  |
        | stringValue  | 是   | string | 文本内容                                                     |
        | charMapFile  | 是   | string | 艺术字路径                                                   |
        | itemWidth    | 是   | int    | 单个字体宽度                                                 |
        | itemHeight   | 是   | int    | 单个字体高度                                                 |
        | startCharMap | 是   | string | 起始字符设置(“/“)                                            |
        | sheet        | 是   | string | 字体内容(H5专属) 比如图片文字是“+-0123456789”,那这个sheet的值就是”+-0123456789” |

        - 示例代码

        \`\`\`
        local artPath = "res/public/word_tywz_01.png"
        local artNum = GUI:TextAtlas_Create(parent, "artNum", 0, 0, "123456", artPath, 18, 27, "0")
        \`\`\`
        `
    },
    {
        "label": "TextAtlas_setProperty",
        "insertText": dedent`
        GUI:TextAtlas_setProperty(\${1:widget}, \${2:stringValue}, \${3:charMapFile}, \${4:itemWidth}, \${5:itemHeight}, \${6:startCharMap}, \${7:sheet})
        `,
        "documentation": dedent`# 设置艺术字配置
        [在线文档](http://engine-doc.996m2.com/web/#/22/2181)

        | 参数         | 必选 | 类型   | 注释                                                         |
        | :----------- | :--- | :----- | :----------------------------------------------------------- |
        | widget       | 是   | obj    | 艺术字对象                                                   |
        | stringValue  | 是   | string | 文本内容                                                     |
        | charMapFile  | 是   | string | 艺术字路径                                                   |
        | itemWidth    | 是   | int    | 字体宽度                                                     |
        | itemHeight   | 是   | int    | 字体高度                                                     |
        | startCharMap | 是   | string | 起始字符设置(“/“)                                            |
        | sheet        | 是   | string | 字体内容(H5专属) 比如图片文字是“+-0123456789”,那这个sheet的值就是”+-0123456789” |

        `
    },
    {
        "label": "TextAtlas_setString",
        "insertText": dedent`
        GUI:TextAtlas_setString(\${1:widget}, \${2:value})
        `,
        "documentation": dedent`# 设置艺术字文本
        [在线文档](http://engine-doc.996m2.com/web/#/22/2181)

        | 参数   | 必选 | 类型   | 注释       |
        | :----- | :--- | :----- | :--------- |
        | widget | 是   | obj    | 艺术字对象 |
        | value  | 是   | string | 文本内容   |

        `
    },
    {
        "label": "TextAtlas_getString",
        "insertText": dedent`
        GUI:TextAtlas_getString(\${1:widget})
        `,
        "documentation": dedent`# 获取艺术字文本
        [在线文档](http://engine-doc.996m2.com/web/#/22/2181)

        | 参数   | 必选 | 类型 | 注释       |
        | :----- | :--- | :--- | :--------- |
        | widget | 是   | obj  | 艺术字对象 |

        `
    }
]






export function getCompletionItems(): vscode.CompletionItem[] {


    const completionItems: vscode.CompletionItem[] = [];
    textAtlasItems.forEach((item: any) => {
        completionItems.push(createFunctionCompletionItem(item.label, item.insertText, item.documentation));
    });
    return completionItems;
}

function createFunctionCompletionItem(label: string, insertText: string, documentation?: string): vscode.CompletionItem {
    const item = new vscode.CompletionItem(label, vscode.CompletionItemKind.Function);
    item.insertText = new vscode.SnippetString(insertText);
    if (documentation) {
        item.documentation = new vscode.MarkdownString(documentation);
    }
    return item;
}
